﻿using CommonTools;
using shop.Bll;
using shop.Bll.cost;
using shop.Model;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace shop.cost
{
    public class MultPostPriceBllUI: MultPostPriceBll
    {
        public override ControlBuilder GetUIBuilder()
        {
            return base.GetUIBuilder()
                .SetFlowBreak()
                //.AddButton("调整价格", AdjustPrice, false);
                .SetFlowBreak()
                .AddButton("下载导入模板", DownloadTemp, false)
                .AddButton("导入", ImportData, false);
        }


        public async Task<PageButtonResult> DownloadTemp()
        {
            var list = (new int[0])
              .Select(a => new
              {
                  起始日期 = DateTime.Today,
                  截止日期 = DateTime.Today,
                  货品编号 = string.Empty,
                  客服备注内容 = string.Empty,
                  商家编码筛选条件= string.Empty,
                  数量 = 0,
                  长 = 0m,
                  宽 = 0m,
                  高 = 0m,
                  实重 = 0m,

                  实重与拋10000最大值 = 0m,
                  实重与拋8000最大值 = 0m,
                  备注 = string.Empty,
              })
              .ToList();

            new ExcelExporter()
                .NewSheet(null)
                .AddList(list)
                .EndThenOpen("多把产品尺寸模板");


            return await Task.FromResult(new PageButtonResult(false,null, false));
        }

        /// <summary> 导入旺店通自费 </summary>
        public async Task<PageButtonResult> ImportData()
        {
            var dt = ExcelHelper.Import();

            if (dt == null)
            {
                return new PageButtonResult(false, null, false);
            }

            // 特殊重量区间1	特殊区间1邮资	特殊重量区间2	特殊区间2邮资	特殊重量区间3	特殊区间3邮资	特殊重量区间4	特殊区间4邮资	特殊重量区间5	特殊区间5邮资	特殊重量区间6	特殊区间6邮资	特殊重量区间7	特殊区间7邮资	特殊重量区间8	特殊区间8邮资
            // 仓库或店铺	省份	城市	县区	物流公司	最优重量上限	特殊重量区间1	特殊区间1邮资	特殊重量区间2	特殊区间2邮资	特殊重量区间3	特殊区间3邮资	特殊重量区间4	特殊区间4邮资	特殊重量区间5	特殊区间5邮资	特殊重量区间6	特殊区间6邮资	特殊重量区间7	特殊区间7邮资	特殊重量区间8	特殊区间8邮资	首重	首重资费	重量区间1	续重单位1	单位资费1	重量区间2	续重单位2	单位资费2	重量区间3	续重单位3	单位资费3	重量区间4	续重单位4	单位资费4	取整方式	抛重比

            var list = dt.AsEnumerable()
                .Select(a => ConvertToModel(a))
                .ToList();


            await DB.FSql.Insert(list).ExecuteAffrowsAsync();

            return new PageButtonResult(true, "导入完成", true);
        }


        private MultPostPrice ConvertToModel(DataRow row)
        {
            var model = new MultPostPrice()
            {
                BeginDate = row.Field<string>("起始日期").IsNullDate(null),
                EndDate = row.Field<string>("截止日期").IsNullDate(null),
                goods_no = row.Field<string>("货品编号"),
                CsRemarks = row.Field<string>("客服备注内容"),
                SpecNoFilter = row.Field<string>("商家编码筛选条件"),
                Qty = row.Field<string>("数量").IsNull(0),
                Flength = row.Field<string>("长").IsNull(0m),
                Width = row.Field<string>("宽").IsNull(0m),
                Height = row.Field<string>("高").IsNull(0m),
                FWeight= row.Field<string>("实重").IsNull(0m),
                weightRatio= row.Field<string>("实重与拋10000最大值").IsNull(0m),
                weightRatio8000= row.Field<string>("实重与拋8000最大值").IsNull(0m),
                Remarks = row.Field<string>("备注"),
                FUser= UserBll.CurrentUser.Name,
            };

            if(model.Qty<=0 && string.IsNullOrEmpty(model.CsRemarks)== false)
            {
                model.Qty = base.GetQtyFromRemarks(model.CsRemarks);
            }

            return model;   
        }


    }
}
